home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / moon.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  4.5 KB  |  169 lines

  1. 10  PRINT," *** MOON PROGRAM IN T.D.L. 8K BASIC  3/3/78 ***
  2. 15  PRINT:PRINT,"K2UYH ----- modified for ibm pc --- wa2tif":PRINT
  3. 20  M0=17472.5:SX=60:TN=10
  4. 30  M1=0.214:M2=0.114:M3=1.272:M4=0.146:M5=0.059:M6=0.057:M7=61.33:M8=1440
  5. 40  U1=0.751213:U2=0.0366011:U3=0.822513:U4=0.0362916:U5=0.995766
  6. 50  G1=0.397821:G2=0.917463:G3=0.658:G4=6.289:G5=1.274:G6=0.186
  7. 60  G7=0.6593:G8=6.2303:G9=5.144:K=2
  8. 70  U6=0.00273778:U7=0.974271:U8=0.0338632:U9=0.0312525:U0=0.0367482
  9. 80  Q0=0.0041645:Q1=0.0657098:Q2=1.00274:Q3=6.64606:HR=24
  10. 90  DEF FNA(X)=INT(X*DG*10+0.5)/10
  11. 100  DEF FNC(X)=(X-INT(X))*TU
  12. 110  HD=100
  13. 120  TU=2*4*ATN(1)
  14. 130  RD=TU/360
  15. 140  DG=360/TU
  16. 141  AD=40: AM=13: OD=74: OM=46
  17. 150  INPUT "WHAT ARE THE STATION CALL LETTERS";CL$
  18. 152  IF CL$="K2UYH" THEN 180
  19. 160  INPUT "WHAT IS LATITUDE IN DEG. MIN. (+FOR NORTH)";AD,AM
  20. 170  INPUT "WHAT IS LONGITUDE IN DEG. MIN. (+FOR WEST)";OD,OM
  21. 180  LA=(AD+AM/60)*RD
  22. 190  LO=(OD+OM/60)*RD
  23. 240  BE=100
  24. 250  B1=0
  25. 260  E=2400
  26. 270  INPUT "WHAT IS THE DESIRED PRINTOUT IN MINUTES";DI
  27. 280  NE=2
  28. 290  NR=1
  29. 300  INPUT "WHAT IS BEGINNING DATE (MM,DD,YYY)";M,D,Y
  30. 301  INPUT "DO YOU WANT POLARIZATION ROTATION ANGLE"; P$
  31. 302  PD=1000
  32. 303  IF P$="NO" THEN 310
  33. 304  INPUT "WHAT IS LAT. OF STATION CALLED"; PD,PM
  34. 305  INPUT "WHAT IS LONG. OF STATION CALLED"; XD,XM
  35. 306  PA=(PD+PM/60)*RD
  36. 307  PO=(XD+XM/60)*RD
  37. 310  GOSUB 1080
  38. 320  BM=M:BD=D:BY=Y:BJ=DJ
  39. 330  INPUT "WHAT IS ENDING DATE";M,D,Y
  40. 340  GOSUB 1080
  41. 350  EJ=DJ
  42. 360  PRINT:PRINT
  43. 370  BJ=INT(BJ*HD+0.5)/HD
  44. 380  EJ=INT(EJ*HD+0.5)/HD
  45. 390  DJ=BJ
  46. 400  LPRINT, CHR$(12):GOSUB 1550
  47. 410  LPRINT, TAB(22);"MOON TABLES FOR STATION"
  48. 420  LPRINT,:LPRINT, TAB(30);CL$:LPRINT,:LPRINT,:LPRINT, CHR$(12):GOSUB 1550
  49. 430  F7=0
  50. 440  F1=2:B=B1:T1=DJ-M0
  51. 450  V1=((B-INT(B/HD)*HD)+INT(B/HD)*SX)
  52. 460  V2=((E-INT(E/HD)*HD)+INT(E/HD)*SX):DF=V1-V2
  53. 470  IF DF<=0 THEN 500
  54. 480  IF DF=>DI THEN 1020
  55. 490  B=E
  56. 500  T=(B-INT(B/HD)*HD)/M8+INT(B/HD)/HR
  57. 510  IF F1>=2 THEN 550
  58. 520  IF F2>=NE THEN 550
  59. 530  F2=F2+1
  60. 540  GH=GH+Q0*DI:GOTO 700
  61. 550  F2=0:T5=T1+T
  62. 560  D1=FNC(U1+U2*T5):D2=FNC(U3+U4*T5):D3=FNC(U5+U6*T5)
  63. 570  D4=FNC(U7+U8*T5):D5=FNC(U9+U0*T5)
  64. 580  DO=D1+G3*RD*SIN(K*D4)+G4*RD*SIN(D2)
  65. 590  DO=DO-G5*RD*SIN(D2-K*D4)-G6*RD*SIN(D3)
  66. 600  DO=DO+M1*RD*SIN(K*D2)-M2*RD*SIN(K*D5)
  67. 610  DO=DO-M5*RD*SIN(K*D2-K*D4)-M6*RD*SIN(D2+D3-K*D4)
  68. 620  S=D5+G7*RD*SIN(K*D4)+G8*RD*SIN(D2)-M3*RD*SIN(D2-K*D4)
  69. 630  DT=G9*RD*SIN(S)-M4*RD*SIN(D5-K*D4)
  70. 640  E1=COS(DT)*SIN(DO)*G1+SIN(DT)*G2:DC=ATN(E1/(SQR(1-E1^2)))
  71. 650  A2=COS(DT)*COS(DO)/COS(DC)
  72. 660  A1=(COS(DT)*SIN(DO)*G2-SIN(DT)*G1)/COS(DC)
  73. 670  A=ATN(A1/A2):GOSUB 1260:RA=A
  74. 680  DL=Q1*T1:DL=T*HR*Q2+Q3+(DL-INT(DL/HR)*HR)
  75. 690  DL=(DL-INT(DL/HR)*HR):GH=(DL/HR)*TU-RA
  76. 700  IF GH>=0 THEN 720
  77. 710  GH=GH+TU
  78. 720  IF GH<=TU THEN 740
  79. 730  GH=GH-TU
  80. 740  UH=LO-GH
  81. 750  ES=COS(LA)*COS(UH)*COS(DC)+SIN(DC)*SIN(LA)
  82. 760  EC=SQR(1-ES^2):EL=ATN((ES/EC)-(1/(M7*EC))):FE=ATN(ES/EC)
  83. 770  IF EL<0 THEN 980
  84. 780  IF EL*DG>BE THEN 980
  85. 790  A2=SIN(DC)/(COS(LA)*COS(FE))
  86. 800  A2=A2-(SIN(LA)/COS(LA))*(SIN(FE)/COS(FE))
  87. 810  A1=SIN(LA)*SIN(DC)+COS(LA)*COS(DC)*COS(UH)
  88. 820  A1=(SIN(UH)*COS(DC))/SQR(1-A1^2):A=ATN(A1/A2):GOSUB 1260:AZ=A
  89. 830  IF AZ>0 THEN 850
  90. 840  AZ=AZ+TU
  91. 850  IF F1<2 THEN 930
  92. 860  BM$=STR$(BM):BM$=MID$(BM$,2,2):BD$=STR$(BD):BD$=MID$(BD$,2,2)
  93. 870  BT=BY-1900
  94. 880  BY$=STR$(BT):BY$=MID$(BY$,2,2)
  95. 890  LPRINT,:LPRINT, TAB(2);BM$;"/"BD$;"/"BY$;" GMT";TAB(16);"AZIMUTH";TAB(25);"ELEVATION";TAB(37);"GHA";TAB(43);"DECLINATION";TAB(56);"ROT"
  96. 910  LPRINT, TAB(2);"------------";TAB(16);"-------";TAB(25);"---------";TAB(36);"-----";TAB(43);"-----------";TAB(56);"---"
  97. 930  IF (T-F1)-(K*DI)/M8<0 THEN 950
  98. 940  LPRINT,
  99. 950  LPRINT, TAB(5);INT(B+0.5);TAB(16);FNA(AZ);TAB(27);FNA(EL);TAB(36);FNA(GH);TAB(46);FNA(DC);TAB(56);FNA(PR)
  100. 965  IF P$<> "NO" THEN GOSUB 1560 ELSE PR=0
  101. 970  F1=T
  102. 980  B=B+DI:Z=((B-INT(B/HD)*HD)-SX)
  103. 990  IF Z<0 THEN 450
  104. 1000  B=INT(B/HD)*HD+HD+Z
  105. 1010  GOTO 450
  106. 1020  GOSUB 1360
  107. 1030  DJ=INT(DJ*HD+0.5)/HD:F7=F7+1
  108. 1040  IF F7=NR THEN LPRINT, CHR$(12):F7=0
  109. 1050  DJ=DJ+1
  110. 1060  IF DJ<=EJ THEN 440
  111. 1070  END
  112. 1080  IF (Y-1853)/4<11 THEN 1110
  113. 1090  C1=-1
  114. 1100  GOTO 1120
  115. 1110  C1=0
  116. 1120  IF M=9 THEN 1160
  117. 1130  IF M=11 THEN 1160
  118. 1140  C2=0
  119. 1150  GOTO 1170
  120. 1160  C2=1
  121. 1170  IF M>=3 THEN 1220
  122. 1180  X1=365*(Y-1853)+D+30*(M+9)+INT((M+10)/2)
  123. 1190  X2=INT((Y-1853)/4)+1+C1
  124. 1200  DJ=X1+X2
  125. 1210  RETURN
  126. 1220  X3=365*(Y-1852)+D+30*(M-3)+INT((M-2)/2)
  127. 1230  X4=INT((Y-1852)/4)+C1+C2
  128. 1240  DJ=X3+X4
  129. 1250  RETURN
  130. 1260  IF A<>0 THEN 1300
  131. 1270  IF A2<0 THEN 1290
  132. 1280  RETURN
  133. 1290  A=TU/2:RETURN
  134. 1300  IF A>0 THEN 1340
  135. 1310  IF A2<0 THEN 1330
  136. 1320  A=TU+A:RETURN
  137. 1330  A=TU+(A-TU/2):RETURN
  138. 1340  IF A2>=0 THEN RETURN
  139. 1350  A=A+TU/2:RETURN
  140. 1360  IF BD<28 THEN 1530
  141. 1370  IF BM<>2 THEN 1420
  142. 1380  IF 400*INT(BY/400)=BY THEN 1410
  143. 1390  IF HD*INT(BY/HD)=BY THEN 1500
  144. 1400  IF 4*INT(BY/4)<>BY THEN 1500
  145. 1410  IF BD>=29 THEN 1500 ELSE 1530
  146. 1420  IF BD<30 THEN 1530 ELSE IF BD>30 THEN 1470
  147. 1430  IF BM=4 THEN 1500
  148. 1440  IF BM=6 THEN 1500
  149. 1450  IF BM=9 THEN 1500
  150. 1460  IF BM<>11 THEN 1530 ELSE 1500
  151. 1470  IF BM<>12 THEN 1500
  152. 1480  BY=INT((BY+1)*HD+0.5)/HD
  153. 1490  BM=0
  154. 1500  BD=1
  155. 1510  BM=BM+1
  156. 1520  GOTO 1540
  157. 1530  BD=BD+1
  158. 1540  RETURN
  159. 1550  FOR XX=1 TO 500:NEXT:RETURN
  160. 1560  REM EME POLARIZATION ROTATION GEOMETRY SUBROUTEEN
  161. 1570  TA=(SIN(PA)*COS(LA)-SIN(LA)*COS(PA)*COS(PO-LO))
  162. 1580  T2=((COS(PA)*SIN(LO-PO))*COS(AZ))
  163. 1590  L1=(SIN(LA)*SIN(PA)+COS(LA)*COS(PA)*COS(PO-LO))
  164. 1600  L2=(SIN(PA)*COS(LA)-SIN(LA)*COS(PA)*COS(PO-LO))
  165. 1610  L3=(COS(PA)*SIN(LO-PO)*SIN(AZ)*SIN(EL))
  166. 1620  PX=(TA*SIN(AZ)-T2)/(L1*COS(EL)-L2*COS(AZ)*SIN(EL)-L3)
  167. 1630  PR=ATN(PX)
  168. 1640  RETURN
  169.